﻿#region using
using ibba.src.DataAccess;
using System.Data;
using ibba.src.global;
using System.Collections.Generic;
using ibba.src.norisk.BusinessEntities;
using System;
#endregion

/*****************************************************************************************************************          
 Copyright © 2010 - Banco Itaú BBA S.A          
          
 ProdutoModalidadeDb 
            
 Histórico de Alterações:      
  07/06/2010 - Adriane M. Souza	- Alteração OS375720

 *****************************************************************************************************************/

namespace ibba.src.norisk.DataAccess
{
    public class ProdutoModalidadeDb : DataAccessBase
    {

        #region ObterProdutoModalidade - Comentado
        //public List<ProdutoModalidade> ObterProdutoModalidade()
        //{


        //    List<ProdutoModalidade> retorno = new List<ProdutoModalidade>();

        //    using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
        //    {

        //        using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure,
        //                                                    "dbo.srcp_consultar_produtos_modalidades",
        //                                                    new List<IDataParameter>()))
        //        {

        //            while (rdr.Read())
        //            {

        //                retorno.Add(new ProdutoModalidade() {
        //                                Ativo                   = (bool?)    ObterValor(rdr, "IC_STATUS"),
        //                                CodigoModalidade        = (string)  ObterValor(rdr, "CD_MODALIDADE"),
        //                                CodigoModalidadeInversa = (string)  ObterValor(rdr, "CD_MODALIDADE_INVERSA"),
        //                                CodigoPre               = (short?)   ObterValor(rdr, "IC_PRE"),
        //                                CodigoProduto           = (string)  ObterValor(rdr, "CD_PRODUTO"),
        //                                CodigoProdutoModalidade = (string)  ObterValor(rdr, "CD_PRODUTO_MODALIDADE_MP"),
        //                                DescricaoModalidade     = (string)  ObterValor(rdr, "DS_MODALIDADE"),
        //                                DescricaoProduto        = (string)  ObterValor(rdr, "DS_PRODUTO"),
        //                                UsaProcessamento        = (string)  ObterValor(rdr, "IC_BATCH"),
        //                                EhIntradia              = (string)  ObterValor(rdr, "IC_INTRADIA"),
        //                                EhIsda                  = (bool?)    ObterValor(rdr, "IC_ISDA"),
        //                                Id                      = (int?)     ObterValor(rdr, "ID_PRODUTO_RISCO"),
        //                                IdClasseProduto         = (int?)     ObterValor(rdr, "ID_CLASSE_PRODUTO"),
        //                                UsaOperacaoOuContabil   = (string)  ObterValor(rdr, "IC_RISCO_INICIAL")

        //                            });
        //            }

        //        }

        //    }

        //    return (retorno);

        //}
        #endregion

        public List<BaseCalculoRisco> ObterBaseCalculoRisco()
        {


            List<BaseCalculoRisco> retorno = new List<BaseCalculoRisco>();

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {

                using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure,
                                                            "dbo.srcp_consultar_base_calculo_risco",
                                                            new List<IDataParameter>()))
                {

                    while (rdr.Read())
                    {

                        retorno.Add(new BaseCalculoRisco()
                        {
                            codigo = (string)ObterValor(rdr, "CD_BASE_CALCULO"),
                            descricao = (string)ObterValor(rdr, "DS_BASE_CALCULO"),

                        });
                    }

                }

            }

            return (retorno);

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pCodParametro">Código do Parametro</param>
        /// <returns>Lista ParametroProdutoModalidade</returns>
        public List<ParametroProdutoModalidade> ObterRelatorioParametroProduto(int pCodParametro)
        {

            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@ID_PARAMETRO", DbType.Int32, pCodParametro));

            List<ParametroProdutoModalidade> retorno = new List<ParametroProdutoModalidade>();

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {

                using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure,
                                                            "DBO.SRCP_OBTER_RELATORIO_PARAMETRO_PRODUTO",
                                                            parametros))
                {

                    while (rdr.Read())
                    {

                        retorno.Add(
                                new ParametroProdutoModalidade()
                                {
                                    CodigoModalidade = (string)ObterValor(rdr, "CD_MODALIDADE"),
                                    CodigoParametro = (int)ObterValor(rdr, "ID_PARAMETRO"),
                                    CodigoProduto = (string)ObterValor(rdr, "CD_PRODUTO"),
                                    CodigoProdutoRisco = (int)ObterValor(rdr, "ID_PRODUTO_RISCO"),
                                    CodigoTipoCampo = (int)ObterValor(rdr, "ID_TIPO_CAMPO"),
                                    DescricaoModalidade = (string)ObterValor(rdr, "DS_MODALIDADE"),
                                    DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO"),
                                    DescricaoProduto = (string)ObterValor(rdr, "DS_PRODUTO"),
                                    TipoCampo = (string)ObterValor(rdr, "TP_CAMPO"),
                                    VlrDefault = (string)ObterValor(rdr, "VL_DEFAULT"),
                                    VlrParametro = (string)ObterValor(rdr, "VL_PARAMETRO")
                                }
                                   );
                    }

                }

            }
            return (retorno);

        }

        /// <summary>
        /// Atualiza os Parametro do Contrato
        /// </summary>
        /// <param name="pCodContrato">Codigo do Contrato</param>
        /// <param name="pCodParametro">Codigo do Parametro</param>
        /// <param name="pVlrParametro">Valor do Parametro</param>
        /// <returns></returns>
        public int AtualizarParametro(int pIdProdutoRisco, int pCodParametro, string pVlrParametro, string cdUsuario)
        {
            List<IDataParameter> parametros = new List<IDataParameter>();
            int retorno;

            parametros.Add(AcessoDadosHelper.CriarParametro("@ID_PRODUTO_RISCO", DbType.Int32, pIdProdutoRisco));
            parametros.Add(AcessoDadosHelper.CriarParametro("@ID_PARAMETRO", DbType.Int32, pCodParametro));
            parametros.Add(AcessoDadosHelper.CriarParametro("@VL_PARAMETRO", DbType.String, pVlrParametro));
            parametros.Add(AcessoDadosHelper.CriarParametro("@CD_USUARIO", DbType.String, cdUsuario));

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {
                retorno = db.ExecuteNonQuery(CommandType.StoredProcedure,
                    "DBO.SRCP_ATUALIZAR_PRODUTO_MODALIDADE_PARAMETRO",
                    parametros);
            }

            return retorno;
        }

        public int Atualizar(BusinessEntities.ProdutoModalidade pProdutoModalidade, string cdUsuario)
        {
            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@ID_PRODUTO_RISCO", DbType.Int32, pProdutoModalidade.Id));
            parametros.Add(AcessoDadosHelper.CriarParametro("@ID_CLASSE_PRODUTO", DbType.Int32, pProdutoModalidade.IdClasseProduto));
            parametros.Add(AcessoDadosHelper.CriarParametro("@IC_INTRADIA", DbType.String, pProdutoModalidade.EhIntradia));
            parametros.Add(AcessoDadosHelper.CriarParametro("@IC_BATCH", DbType.String, pProdutoModalidade.UsaProcessamento));
            parametros.Add(AcessoDadosHelper.CriarParametro("@IC_RISCO_INICIAL", DbType.String, pProdutoModalidade.UsaOperacaoOuContabil));
            parametros.Add(AcessoDadosHelper.CriarParametro("@IC_PRE", DbType.String, pProdutoModalidade.CodigoPre.HasValue ? pProdutoModalidade.CodigoPre : 0));
            parametros.Add(AcessoDadosHelper.CriarParametro("@IC_ISDA", DbType.String, pProdutoModalidade.EhIsda.HasValue ? pProdutoModalidade.EhIsda : false));
            parametros.Add(AcessoDadosHelper.CriarParametro("@CD_USUARIO", DbType.String, cdUsuario));

            int retorno;

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {
                retorno = db.ExecuteNonQuery(CommandType.StoredProcedure,
                                       "dbo.SRCP_ATUALIZAR_PRODUTO_MODALIDADE",
                                       parametros);
            }

            return retorno;

        }

        public List<ProdutoModalidadeLog> ListarProdutoModalidadeLog(string cdProduto, string cdModalidade)
        {
            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@CD_PRODUTO", DbType.String, cdProduto));
            parametros.Add(AcessoDadosHelper.CriarParametro("@CD_MODALIDADE", DbType.String, cdModalidade));

            List<ProdutoModalidadeLog> retorno = new List<ProdutoModalidadeLog>();

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {
                using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure,
                                                            "DBO.SRCP_LISTAR_PRODUTO_MODALIDADE_LOG",
                                                            parametros))
                {
                    while (rdr.Read())
                    {
                        retorno.Add(
                                        new ProdutoModalidadeLog()
                                        {
                                            IdLog = (int)ObterValor(rdr, "ID_LOG"),
                                            CodigoProdutoRisco = (int)ObterValor(rdr, "ID_PRODUTO_RISCO"),
                                            CodigoProduto = (string)ObterValor(rdr, "CD_PRODUTO"),
                                            DescricaoProduto = (string)ObterValor(rdr, "DS_PRODUTO"),
                                            CodigoModalidade = (string)ObterValor(rdr, "CD_MODALIDADE"),
                                            DescricaoModalidade = (string)ObterValor(rdr, "DS_MODALIDADE"),
                                            DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO"),
                                            VlrParametro = (string)ObterValor(rdr, "VL_PARAMETRO"),
                                            CodUsuario = (string)ObterValor(rdr, "CD_USUARIO"),
                                            DatAlteracao = (DateTime)ObterValor(rdr, "DT_ALTERACAO")
                                        }
                                   );
                    }
                }
            }

            return retorno;
        }
    }
}
